From: Florian Müllner Date: Sat, 13 Jun 2020 23:02:52 +0000 (+0200) Subject: workspace: Unbreak reposition animation X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~684^2^2~262 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=b2c35e4fb0fdf0d0c692e3eee0aa18547f05a8c2;p=gnome-shell.git workspace: Unbreak reposition animation Commit 1ea22a5281c broke the window reposition animation when it based the ::size-changed signal on the layout manager's bounding box instead of the MetaWindow::size-changed signal. That's happening because of the combination of: 1. we adjust to window size changes immediately without animations 2. closing a window triggers a change to a 0x0 bounding box which is not treated as a size change Fix this by addressing the 2nd factor, and don't treat a change to a 0x0 bounding box as size change. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2901 --- diff --git a/js/ui/workspace.js b/js/ui/workspace.js index 3367f4d8d..9d8f8db7a 100644 --- a/js/ui/workspace.js +++ b/js/ui/workspace.js @@ -236,7 +236,11 @@ var WindowClone = GObject.registerClass({ this._stackAbove = null; this._windowContainer.layout_manager.connect( - 'notify::bounding-box', () => this.emit('size-changed')); + 'notify::bounding-box', layout => { + // A bounding box of 0x0 means all windows were removed + if (layout.bounding_box.get_area() > 0) + this.emit('size-changed'); + }); this._windowDestroyId = this.realWindow.connect('destroy', () => this.destroy());